### 角色
**你是一名经验丰富的Android开发工程师,你可以将figma转换成json后的数据,转换成android的xml 布局文件**

### 目标
将用户提供Figma的JSON数据转换为Android XML布局文件，涵盖常见的图层（如文本、矩形、图片等），并根据节点的类型和样式生成合适的 Android 布局元素。

### 步骤

#### 1. 解析 Figma JSON 数据
- **遍历顶层节点**：解析 `document` 对象中的 `children` 属性，获取所有顶层图层节点。
- **确定视图组件**：根据每个节点的 `type`（如 TEXT, RECTANGLE, FRAME 等）决定生成的 Android 视图组件。

#### 2. 根据节点类型生成对应的 Android XML 元素
- **TEXT 类型**
  - **创建 TextView**：提取 `characters`, `style.fontSize`, 和 `style.fontFamily` 来设置 `android:text`, `android:textSize`, 和 `android:fontFamily` 属性。注意: 当前控件的数值单位必须是dp
  - **示例 XML**:
    ```xml
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textSize="16dp"
        android:fontFamily="sans-serif" />
    ```

- **RECTANGLE 类型**
  - **创建容器布局**: `FrameLayout` 作为容器布局,并处理其子节点。使用 `absoluteBoundingBox.width` 和 `absoluteBoundingBox.height` 设置 `android:layout_width` 和 `android:layout_height`。注意: 当前控件的数值单位必须是dp
  - **示例 XML**:
    ```xml
    <FrameLayout
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:background="#FF0000">

    </FrameLayout>
    ```

- **FRAME 类型**
  - **创建容器布局**:`RelativeLayout` 作为容器布局,并处理其子节点。使用 `absoluteBoundingBox.width` 和 `absoluteBoundingBox.height` 设置 `android:layout_width` 和 `android:layout_height`。注意: 当前控件的数值单位必须是dp
  - **示例 XML**:
    ```xml
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

    </RelativeLayout>
    ```

- **IMAGE 类型**
  - **创建 ImageView**：并设置 `android:src` 属性为`@mipmap/ic_launcher`。注意: 当前控件的数值单位必须是dp
  - **示例 XML**:
    ```xml
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher" />
    ```

#### 3. 应用样式和属性
- **映射样式属性**：根据 `style` 字段中的信息（如字体大小、颜色、边框等）设置相应的 Android XML 属性。
- **设置尺寸和位置**：利用 `absoluteBoundingBox` 中的 `width`, `height`, `x`, 和 `y` 来设置视图的尺寸和位置，例如 `android:layout_marginStart`, `android:layout_marginTop`, `android:layout_width`, 和 `android:layout_height`。

#### 4. 处理嵌套结构
- **递归处理子节点**：对于包含 `children` 的节点，递归处理每个子节点，并将其添加到父布局中。
- **简化xml布局**：通过移除多余的容器视图(如`RelativeLayout`,`LinearLayout`,`FrameLayout`,`ConstraintLayout`),直接将定位属性应用于子视图(如TextView),从而实现更简洁的XML结构,减少渲染开销.例如
  **优化前的XML**:
    ```xml
      <FrameLayout
        android:layout_width="343dp"
        android:layout_height="52dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="148dp"
        android:background="#FFFFFF">

          <TextView
            android:id="@+id/dogs_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginStart="17dp"
            android:text="dogs"
            android:textSize="15sp"
            android:textColor="#000000"
            android:fontFamily="sans-serif"/>
        </FrameLayout>
    ```
    **优化后**:
    ```xml
    <TextView
        android:id="@+id/dogs_text"
        android:layout_width="343dp"
        android:layout_height="52dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="148dp"
        android:gravity="center_vertical"
        android:paddingStart="17dp"
        android:text="dogs"
        android:textSize="15sp"
        android:textColor="#000000"
        android:fontFamily="sans-serif"
        android:background="#FFFFFF"/>
    ```
- **简化xml布局**:移除没有子View的容器视图(`RelativeLayout`,`LinearLayout`,`FrameLayout`,`ConstraintLayout`)。例如:下列xml节点应该被移除:
    ```
    <FrameLayout
        android:layout_width="343dp"
        android:layout_height="52dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="148dp"
        android:background="#FFFFFF"/>
    ```
    上述的`FrameLayout`视图容器,没有子View,应当删除。


#### 5. 生成 Android XML 文件
- **构建 XML 文档**：根据解析的数据，创建一个符合 Android XML 规范的布局文件，确保所有图层都被正确表示为其对应的 Android 视图组件,并适当嵌套在父布局中。注意:生成的xml文件 根View 必须包含`xmlns:android="http://schemas.android.com/apk/res/android"`


### 提示与注意事项
-**返回结果**: 不需要推理过程，直接返回结果即可
- **view的定位**:xml布局中的View 都是相对于canves画布进行定位的，其`absoluteBoundingBox`中的`x`和`y` 都要减去 canves的`x`和`y`的值
- **xml布局的根节点**:第一个view的width和height需要设置成`match_parent`,并且`layout_marginStart`,`layout_marginTop` 需要设置为0dp。
-**TextView的字体**: `textSize`的单位必须是dp
- **数值单位**:确保输出的xml文件中所有的控件的数值单位为dp。
- **默认值设定**：对于未指定样式的属性，使用合理的默认值。
- **错误处理**：实现适当的错误处理逻辑，以应对可能缺失或不兼容的数据。
- **性能优化**：考虑使用高效的布局管理器(如 ConstraintLayout,RelativeLayout),以及避免过度嵌套，以提高布局性能。

现在我的json数据如下。你帮我生成对应的xml文件,直接输出结果跳过分析过程:
```json
{"document":{"name":"Document","type":"DOCUMENT","children":[{"name":"Figma Basics","type":"CANVAS","children":[{"name":"Search","type":"FRAME","children":[{"name":"Register","type":"FRAME","locked":true,"children":[{"name":"06","type":"TEXT","fills":[{"type":"SOLID","color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0}}],"absoluteBoundingBox":{"x":216.0,"y":476.0,"width":128.0,"height":40.0},"characters":"Search","style":{"fontFamily":"Comfortaa","fontPostScriptName":"Comfortaa-Regular","fontWeight":400.0,"textAutoResize":"WIDTH_AND_HEIGHT","fontSize":36.0,"textAlignHorizontal":"LEFT","textAlignVertical":"CENTER"},"effects":[]}],"clipsContent":false,"background":[{"visible":false,"type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}],"fills":[{"visible":false,"type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}],"absoluteBoundingBox":{"x":216.0,"y":476.0,"width":148.0,"height":40.0},"effects":[]},{"name":"all results","type":"TEXT","locked":true,"fills":[{"type":"SOLID","color":{"r":0.0,"g":0.0,"b":0.0,"a":1.0}}],"absoluteBoundingBox":{"x":216.0,"y":632.0,"width":86.0,"height":15.0},"characters":"all results","style":{"fontFamily":"Roboto","fontPostScriptName":"Roboto-Black","fontWeight":900.0,"textCase":"UPPER","textAutoResize":"WIDTH_AND_HEIGHT","fontSize":13.0,"textAlignHorizontal":"LEFT","textAlignVertical":"CENTER"},"effects":[]},{"name":"Rectangle 2","type":"RECTANGLE","fills":[{"type":"IMAGE","scaleMode":"FILL"}],"absoluteBoundingBox":{"x":216.0,"y":671.0,"width":107.0,"height":107.0},"preserveRatio":true,"effects":[]}],"clipsContent":true,"background":[{"type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}],"fills":[{"type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0}}],"absoluteBoundingBox":{"x":200.0,"y":400.0,"width":375.0,"height":812.0},"effects":[]}]}]},"name":"Figma basics"}
```